/**
 * Generali Solutions d'assurances - Tous droits réservés &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.om.impl;

import fr.generali.accueilclient.client.om.IIdentifiantContact;

/**
 * @author Holmes Kelly
 */
public class IdentifiantContact implements IIdentifiantContact {

    /**
     * identifiant
     */
    private String identifiant;

    /**
     * numero ordre
     */
    private String numeroOrdre;

    /**
     * {@inheritDoc}
     */
    public String getIdentifiant() {
        return identifiant;
    }

    /**
     * {@inheritDoc}
     */
    public void setIdentifiant(String identifiant) {
        this.identifiant = identifiant;
    }

    /**
     * {@inheritDoc}
     */
    public String getNumeroOrdre() {
        return numeroOrdre;
    }

    /**
     * {@inheritDoc}
     */
    public void setNumeroOrdre(String numeroOrdre) {
        this.numeroOrdre = numeroOrdre;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object obj) {

        boolean isEqual = false;

        if (this == obj) {

            return true;
        }

        if (obj != null && obj.getClass().getName().equals(this.getClass().getName())) {

            final IIdentifiantContact identifiantContactCompare = (IIdentifiantContact ) obj;

            boolean isIdentifiantContactNonNull = this.getIdentifiant() != null && this.getNumeroOrdre() != null;

            boolean isIdentifiantContactCompareNonNull =
                            identifiantContactCompare.getIdentifiant() != null
                                            && identifiantContactCompare.getNumeroOrdre() != null;

            boolean isIdentifiantContactNull = this.getIdentifiant() == null && this.getNumeroOrdre() == null;

            boolean isIdentifiantContactCompareNull =
                            identifiantContactCompare.getIdentifiant() == null
                                            && identifiantContactCompare.getNumeroOrdre() == null;

            if (isIdentifiantContactNonNull && isIdentifiantContactCompareNonNull) {

                isEqual = this.getIdentifiant().equals(identifiantContactCompare.getIdentifiant());
                isEqual = isEqual && this.getNumeroOrdre().equals(identifiantContactCompare.getNumeroOrdre());

            }

            if (isIdentifiantContactNull && isIdentifiantContactCompareNull) {

                isEqual = super.equals(obj);
            }

        }

        return isEqual;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {

        int hashCode = 0;

        int multiplier = 33;

        boolean isIdentifiantContactNonNull = this.getIdentifiant() != null && this.getNumeroOrdre() != null;
        boolean isIdentifiantContactNull = this.getIdentifiant() == null && this.getNumeroOrdre() == null;

        if (isIdentifiantContactNonNull) {

            hashCode = multiplier * hashCode + this.getIdentifiant().hashCode();
            hashCode = multiplier * hashCode + this.getNumeroOrdre().hashCode();
        }

        if (isIdentifiantContactNull) {

            return super.hashCode();
        }

        return hashCode;
    }

}
